package com.ufcg.lvc.client.prototipacao;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Label;
import com.smartgwt.client.util.BooleanCallback;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.ufcg.lvc.client.GreetingServiceCRUD;
import com.ufcg.lvc.client.GreetingServiceCRUDAsync;
import com.ufcg.lvc.client.UserData;
import com.ufcg.lvc.client.MyListGrids.ModelosDeProvaListGrid;

public class MeusModelosDeProva {

	AbsolutePanel panelModelosDeProva;
	private ModelosDeProvaListGrid listGrid;
	UserData UD;
	
	public MeusModelosDeProva(UserData uD) {
		UD = uD;
		final AsyncCallback<Boolean> callback = new AsyncCallback<Boolean>() {
			@Override
			public void onFailure(Throwable caught) {
				System.out.println("Erro na comunicação com o servidor");
			}

			@Override
			public void onSuccess(Boolean result) {
				listGrid.loadDados(UD);
			}
		};

		panelModelosDeProva = new AbsolutePanel();
		panelModelosDeProva.setSize("900px", "707px");

		Label titulo = new Label("Meus modelos de prova");
		titulo.setStyleName("gwt-TituloMedio");
		panelModelosDeProva.add(titulo, 0, 10);

		Label lblNovoaluno = new Label("Novo modelo de prova:");
		lblNovoaluno.setStyleName("gwt-TituloPequeno");
		panelModelosDeProva.add(lblNovoaluno, 0, 397);

		com.google.gwt.user.client.ui.Button btnNovoModelo = new com.google.gwt.user.client.ui.Button("Criar questão");
		btnNovoModelo.setText("Novo modelo");
		panelModelosDeProva.add(btnNovoModelo, 60, 432);
		btnNovoModelo.setSize("140px", "29px");
		btnNovoModelo.addClickHandler(new ClickHandler() {

			@Override
			public void onClick(ClickEvent event) {
				panelModelosDeProva.clear();
				NovoModeloDeProva n = new NovoModeloDeProva(UD);
				panelModelosDeProva.add(n.getPanel());
			}
		});

		com.google.gwt.user.client.ui.Button btnEditar = new com.google.gwt.user.client.ui.Button(
				"Editar");
		panelModelosDeProva.add(btnEditar, 749, 342);
		btnEditar.setSize("91px", "29px");

		com.google.gwt.user.client.ui.Button btnExcluir = new com.google.gwt.user.client.ui.Button(
				"Excluir");
		panelModelosDeProva.add(btnExcluir, 652, 342);
		btnExcluir.setSize("91px", "29px");

		com.google.gwt.user.client.ui.Button btnVoltar = new com.google.gwt.user.client.ui.Button("Voltar");
		panelModelosDeProva.add(btnVoltar, 404, 520);
		btnVoltar.setSize("91px", "29px");
		
//		com.google.gwt.user.client.ui.Button btnNotas = new com.google.gwt.user.client.ui.Button("Notas");
//		btnNotas.setText("Resultados");
//		panelModelosDeProva.add(btnNotas, 555, 342);
//		btnNotas.setSize("91px", "29px");
//		
//		com.google.gwt.user.client.ui.Button btnCorrigirProva = new com.google.gwt.user.client.ui.Button("Corrigir prova");
//		btnCorrigirProva.setText("Corrigir");
//		panelModelosDeProva.add(btnCorrigirProva, 361, 342);
//		btnCorrigirProva.setSize("91px", "29px");
//		
//		com.google.gwt.user.client.ui.Button btnImprimir = new com.google.gwt.user.client.ui.Button("Imprimir");
//		panelModelosDeProva.add(btnImprimir, 458, 342);
//		btnImprimir.setSize("91px", "29px");
		
		listGrid = new ModelosDeProvaListGrid(getServicoCRUD(), UD);
		panelModelosDeProva.add(listGrid, 60, 69);
				
		btnEditar.addClickHandler(new ClickHandler() {
			@Override
			public void onClick(ClickEvent event) {
				try {
					ListGridRecord elem = listGrid.getSelectedRecord();
					NovoModeloDeProva n = new NovoModeloDeProva(
							elem.getAttribute("titulo"),
							elem.getAttribute("assunto"),
							elem.getAttribute("comentario"), UD);
					panelModelosDeProva.clear();
					panelModelosDeProva.add(n.getPanel());	
				} catch (Exception e) {
					Window.alert("Selecione o modelo de prova que deseja editar.");
				}
		}});
		
		btnExcluir.addClickHandler(new ClickHandler() {
			@Override
			public void onClick(ClickEvent event) {
				
				try {
					if (listGrid.getSelectedRecord() != null) {
						SC.ask("Deseja deletar o modelo de prova?", new BooleanCallback() {  
		                    public void execute(Boolean value) {  
		                        if (value != null && value) {                          	
		        					getServicoCRUD().deletarLinha("modelodeprova", "titulo", listGrid.getSelectedRecord().getAttribute("titulo"), UD.getId_usuario(), callback);
		        					listGrid.loadDados(UD);  
		                        }  
		                    }  
		                });
					}else {
						Window.alert("Selecione o modelo de prova que deseja excluir.");	
					}
				} catch (Exception e) {
					Window.alert("Selecione o modelo de prova que deseja excluir.");
				}
				
		}});
		
		btnVoltar.addClickHandler(new ClickHandler() {
			@Override
			public void onClick(ClickEvent event) {
				panelModelosDeProva.clear();
		}});
	}
	
	public static GreetingServiceCRUDAsync getServicoCRUD() {
		return GWT.create(GreetingServiceCRUD.class);
	}

	public AbsolutePanel getPanel() {
		return panelModelosDeProva;
	}
}
